Tapestry এর ফর্ম এবং Validation

Web Development - অ্যাপাচি ট্যাপেস্ট্রি (Apache Tapestry) -

Tapestry একটি শক্তিশালী ওয়েব ফ্রেমওয়ার্ক, যা ডেভেলপারদের ফর্ম হ্যান্ডলিং এবং ইনপুট ভ্যালিডেশন প্রক্রিয়াকে সহজ এবং কার্যকরভাবে পরিচালনা করতে সহায়তা করে। Tapestry ফ্রেমওয়ার্কে ফর্ম এবং ভ্যালিডেশন এর কার্যক্রম একটি অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে, যা ফর্ম ডেটা সংগ্রহ এবং তার সঠিকতা যাচাই করতে ব্যবহৃত হয়।

এই টিউটোরিয়ালে, Tapestry ফ্রেমওয়ার্কের ফর্ম এবং ভ্যালিডেশন কিভাবে কাজ করে এবং কিভাবে এগুলো ব্যবহার করা যায় তা বিস্তারিতভাবে আলোচনা করা হবে।


ফর্ম হ্যান্ডলিং (Form Handling)

Tapestry এ ফর্ম হ্যান্ডলিং প্রক্রিয়াটি Model-View-Controller (MVC) প্যাটার্নে কাজ করে, যেখানে Model ডেটা রিপ্রেজেন্ট করে, View হল ফর্মের UI (HTML), এবং Controller হল ফর্মের লজিক যা ফর্ম ডেটা প্রক্রিয়া করে।

ফর্ম হ্যান্ডলিংয়ের প্রধান উপাদান

  1. Tapestry ফর্ম ট্যাগ:
    ফর্ম তৈরি করার জন্য Tapestry এর <t:form> ট্যাগ ব্যবহৃত হয়। এই ট্যাগটি HTML ফর্মের সাথে সংযুক্ত থাকে এবং ফর্মের submit এবং validation প্রক্রিয়া পরিচালনা করে।
  2. Form Component (ফর্ম কম্পোনেন্ট):
    Tapestry ফর্ম কম্পোনেন্টগুলির জন্য একটি Java ক্লাস তৈরি করা হয়, যা ফর্ম ডেটা গ্রহণ এবং প্রক্রিয়া করতে ব্যবহৃত হয়। এটি ডেটাবেসে ডেটা সংরক্ষণ বা বিভিন্ন লজিক প্রক্রিয়া করতে সাহায্য করে।
  3. Form Submission:
    ফর্মের ডেটা সবার আগে একটি Java Bean এ ইনজেক্ট করা হয়, তারপর onSubmit মেথডে পাঠানো হয়, যেখানে ফর্ম ডেটা প্রক্রিয়া করা হয়।

উদাহরণ: ফর্ম হ্যান্ডলিং

<!DOCTYPE html>
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
    <title>User Registration Form</title>
</head>
<body>
    <h1>User Registration</h1>
    <t:form t:id="registrationForm">
        <t:textfield t:id="username" value="user.username" />
        <t:passwordfield t:id="password" value="user.password" />
        <t:button>Submit</t:button>
    </t:form>
</body>
</html>

এখানে username এবং password ইনপুট ফিল্ড যুক্ত করা হয়েছে। এই ফর্মে ইনপুট ডেটা একটি Java Bean ক্লাসের প্রপার্টিতে মাপল করা হবে।

Java Bean (RegistrationForm.java):

public class RegistrationForm {
    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void onSubmit() {
        // ফর্ম সাবমিটের পর লজিক যেমন ডেটাবেসে ডেটা সেভ করা
        System.out.println("User Registered: " + username);
    }
}

ইনপুট ভ্যালিডেশন (Input Validation)

Tapestry এর ভ্যালিডেশন ফ্রেমওয়ার্ক আপনাকে ফর্মের ইনপুট ডেটা যাচাই করার জন্য বিভিন্ন ধরনের ভ্যালিডেশন কন্ট্রোল সরবরাহ করে। এটি আপনাকে সহজে ইনপুট ডেটা ভ্যালিডেশন এবং কাস্টম ভ্যালিডেশন রুল তৈরি করতে সহায়তা করে।

Tapestry Validation এর বৈশিষ্ট্য

  1. Built-in Validation Controls:
    Tapestry কিছু বিল্ট-ইন ভ্যালিডেশন কন্ট্রোল সরবরাহ করে, যেমন:
    • RequiredFieldValidator: ইনপুট ফিল্ডে কোন ভ্যালু দেওয়া হয়েছে কি না, তা যাচাই করে।
    • RangeValidator: একটি নির্দিষ্ট রেঞ্জে ইনপুট ভ্যালু রয়েছে কিনা যাচাই করে।
    • EmailValidator: ইনপুট ভ্যালু একটি বৈধ ইমেইল ঠিকানা কিনা যাচাই করে।
  2. Custom Validation:
    আপনি নিজস্ব ভ্যালিডেশন রুলস তৈরি করতে পারেন যা নির্দিষ্ট ব্যবসায়িক লজিক অনুসরণ করে।
  3. Client-Side এবং Server-Side Validation:
    Tapestry ক্লায়েন্ট সাইড (JavaScript) এবং সার্ভার সাইড উভয় ভ্যালিডেশন সমর্থন করে। ক্লায়েন্ট সাইড ভ্যালিডেশন ব্যবহারকারীর ইন্টারঅ্যাকশন আরও দ্রুত করে এবং সার্ভার সাইড ভ্যালিডেশন ডেটার নিরাপত্তা নিশ্চিত করে।

উদাহরণ: ইনপুট ভ্যালিডেশন

<t:form t:id="registrationForm">
    <t:textfield t:id="username" value="user.username">
        <t:requiredfieldvalidator message="Username is required" />
    </t:textfield>
    <t:passwordfield t:id="password" value="user.password">
        <t:requiredfieldvalidator message="Password is required" />
    </t:passwordfield>
    <t:button>Submit</t:button>
</t:form>

এখানে username এবং password ফিল্ডে RequiredFieldValidator যুক্ত করা হয়েছে, যা নিশ্চিত করবে যে ফিল্ডগুলো খালি না থাকে।

Custom Validation Example:

public class RegistrationForm {
    private String username;
    private String password;

    // Getters and Setters

    public void onSubmit() {
        if (username.length() < 5) {
            throw new ValidationException("Username must be at least 5 characters.");
        }
        // Further logic
    }
}

এখানে একটি কাস্টম ভ্যালিডেশন যোগ করা হয়েছে যা নিশ্চিত করবে যে username কমপক্ষে ৫টি অক্ষরের হতে হবে।


সারাংশ

Tapestry ফ্রেমওয়ার্কে ফর্ম হ্যান্ডলিং এবং ইনপুট ভ্যালিডেশন প্রক্রিয়া খুবই শক্তিশালী এবং নমনীয়। এটি বিল্ট-ইন ভ্যালিডেশন কন্ট্রোল এবং কাস্টম ভ্যালিডেশন তৈরির মাধ্যমে ডেভেলপারদের ইনপুট ডেটা যাচাই করা সহজ করে তোলে। Tapestry ফ্রেমওয়ার্কে ফর্ম ডেটা প্রক্রিয়া এবং সঠিকতা যাচাই একটি অপরিহার্য অংশ, যা অ্যাপ্লিকেশনের নিরাপত্তা এবং কার্যকারিতা বৃদ্ধির জন্য খুবই গুরুত্বপূর্ণ।

Content added By

Form Component এর সাথে কাজ করা

Tapestry ফ্রেমওয়ার্কে form component ব্যবহার করে ব্যবহারকারীদের ইনপুট গ্রহণ করা এবং তা প্রসেস করা সহজ এবং কার্যকর। Tapestry তে ফর্ম কম্পোনেন্টগুলি UI কম্পোনেন্টস যেমন textfields, buttons, checkboxes এবং submit actions অন্তর্ভুক্ত থাকে, যা ফর্ম ডেটা সংগ্রহ এবং প্রক্রিয়াকরণে সহায়তা করে।

এই টিউটোরিয়ালে, আমরা দেখব কীভাবে Tapestry তে ফর্ম কম্পোনেন্ট ব্যবহার করে ডেটা সংগ্রহ করা এবং তা প্রক্রিয়াকরণ করা যায়।


Tapestry Form Components

Tapestry ফ্রেমওয়ার্কে ফর্ম কম্পোনেন্টগুলি t:form, t:textfield, t:passwordfield, t:checkbox, t:button, t:select ইত্যাদি অন্তর্ভুক্ত থাকে। এই কম্পোনেন্টগুলোর মাধ্যমে আপনি সহজে ফর্ম তৈরি করতে পারেন।


ধাপ ১: Tapestry ফর্ম তৈরি

ধরা যাক, আপনি একটি login form তৈরি করতে চান, যেখানে ব্যবহারকারী username এবং password প্রদান করবেন এবং একটি login বাটনে ক্লিক করে লগইন করবেন।

  1. HTML টেমপ্লেট (login.tml):
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
    <head>
        <title>Login Form</title>
    </head>
    <body>
        <h2>Login</h2>

        <!-- Form Tag -->
        <t:form t:id="loginForm">
            <t:label value="Username" for="username"/>
            <t:textfield t:id="username" value="username"/>

            <t:label value="Password" for="password"/>
            <t:passwordfield t:id="password" value="password"/>

            <t:checkbox t:id="rememberMe" value="rememberMe" label="Remember Me" />
            
            <!-- Login Button -->
            <t:button t:id="loginButton" value="Login"/>
        </t:form>
    </body>
</html>

এখানে:

  • t:form: এটি একটি ফর্ম তৈরি করে, যা ব্যবহারকারীর ইনপুট গ্রহণের জন্য ব্যবহৃত হয়।
  • t:textfield: এটি একটি টেক্সট ফিল্ড তৈরি করে যা ব্যবহারকারীকে username ইনপুট করতে দেয়।
  • t:passwordfield: এটি একটি পাসওয়ার্ড ফিল্ড তৈরি করে, যেখানে ইনপুট হিডেন থাকে।
  • t:checkbox: এটি একটি চেকবক্স তৈরি করে, যেখানে ব্যবহারকারী Remember Me চেক করতে পারেন।
  • t:button: এটি একটি বাটন তৈরি করে, যা ব্যবহারকারীকে লগইন করার জন্য ক্লিক করতে দেয়।

ধাপ ২: Java ক্লাস তৈরি করা

এখন, ফর্মের ডেটা প্রক্রিয়া এবং সঠিকভাবে ব্যবহারকারীর ইনপুট গ্রহণ করার জন্য একটি Java ক্লাস তৈরি করতে হবে। এই Java ক্লাসে Tapestry-এর ইনপুট ডেটা প্রক্রিয়াকরণ করা হয়।

  1. Java ক্লাস (Login.java):
package com.example.pages;

import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SessionState;

public class Login {
    @Property
    private String username;  // Username field

    @Property
    private String password;  // Password field

    @Property
    private boolean rememberMe;  // Checkbox for remember me option

    // Action to be performed when the form is successfully submitted
    public Object onSuccessFromLoginForm() {
        if ("admin".equals(username) && "password".equals(password)) {
            // Redirect to home page if login is successful
            return Home.class;
        } else {
            // Stay on the login page if credentials are incorrect
            return Login.class;
        }
    }
}

এখানে:

  • @Property: Tapestry অটোমেটিকভাবে username, password, এবং rememberMe ভ্যালু গুলি ম্যানেজ করবে। যখন ব্যবহারকারী ফর্মটি সাবমিট করেন, Tapestry এগুলিকে Java ক্লাসের প্রপার্টির সাথে বাইনড করবে।
  • onSuccessFromLoginForm(): ফর্মটি সফলভাবে সাবমিট হলে, এই মেথডটি কল হবে। এখানে আপনি লগইন যাচাই করবেন এবং সঠিক হলে হোম পেজে রিডাইরেক্ট করবেন। অন্যথায়, লগইন পেজে ফিরে আসবেন।

ধাপ ৩: ফর্মের ভ্যালিডেশন

Tapestry আপনাকে ভ্যালিডেশন ফিচার সরবরাহ করে, যা ফর্ম ডেটা যাচাই করতে সহায়তা করে। আপনি Tapestry-এর বিল্ট-ইন data validation ফিচার ব্যবহার করতে পারেন।

  1. Java ক্লাসে ভ্যালিডেশন যোগ করা:
package com.example.pages;

import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.validator.annotations.Length;

public class Login {
    @Property
    @Length(min = 5, message = "Username must be at least 5 characters long")
    private String username;  // Username field

    @Property
    @Length(min = 6, message = "Password must be at least 6 characters long")
    private String password;  // Password field

    @Property
    private boolean rememberMe;  // Checkbox for remember me option

    // Action to be performed when the form is successfully submitted
    public Object onSuccessFromLoginForm() {
        if ("admin".equals(username) && "password".equals(password)) {
            return Home.class;
        } else {
            return Login.class;
        }
    }
}

এখানে:

  • @Length: এটি username এবং password ফিল্ডের জন্য মিনিমাম লেন্থ যাচাই করছে। যদি ব্যবহারকারী কমপক্ষে ৫টি অক্ষর username এবং ৬টি অক্ষর password প্রদান না করে, তবে message দেখানো হবে।

ধাপ ৪: ফর্মের সাবমিশন এবং রেসপন্স

ফর্ম ডেটা সাবমিট হওয়ার পরে, আপনি Tapestry তে action methods ব্যবহার করে ডেটা প্রসেস করতে পারেন এবং তার উপর ভিত্তি করে রেসপন্স প্রদান করতে পারেন।

  1. ফর্মের সাবমিশন: ব্যবহারকারী Login বাটনে ক্লিক করলে, ফর্মটি সাবমিট হবে এবং তারপরে onSuccessFromLoginForm() মেথডটি কল হবে।
  2. রিডাইরেকশন: যদি লগইন সফল হয়, ব্যবহারকারীকে Home পেজে রিডাইরেক্ট করা হবে। অন্যথায়, Login পেজে ফিরে আসবে।

সারাংশ

Tapestry ফ্রেমওয়ার্কে form components ব্যবহার করা খুবই সহজ এবং ডাইনামিক। t:form, t:textfield, t:passwordfield, t:checkbox, এবং t:button কম্পোনেন্ট ব্যবহার করে আপনি দ্রুত ফর্ম তৈরি করতে পারেন এবং Tapestry এর অটোমেটিক data binding এবং validation ফিচার ব্যবহার করে ইনপুট ডেটা প্রক্রিয়া করতে পারেন। Tapestry ফর্ম কম্পোনেন্টগুলির মাধ্যমে ইউজার ইন্টারফেস এবং ব্যাকএন্ড লজিকের মধ্যে একটি পরিষ্কার এবং কার্যকর সংযোগ তৈরি করা যায়।

Content added By

Tapestry এর Validation Framework

Apache Tapestry একটি শক্তিশালী Validation Framework সরবরাহ করে, যা ফর্মের ইনপুট ডেটার বৈধতা যাচাই করতে সাহায্য করে। এটি ডেভেলপারদেরকে data validation সহজে এবং কার্যকরভাবে প্রয়োগ করতে সহায়তা করে। Tapestry-এর ভ্যালিডেশন ফ্রেমওয়ার্কটি অ্যানোটেশন-বেসড ভ্যালিডেশন, কাস্টম ভ্যালিডেশন রুলস, এবং ব্যবহারকারী বান্ধব ত্রুটি বার্তা সমর্থন করে।

এই ফ্রেমওয়ার্কটি server-side validation সম্পাদন করে, তবে আপনি ক্লায়েন্ট-সাইড ভ্যালিডেশনও প্রয়োগ করতে পারেন যদি চান। Tapestry-এর built-in ভ্যালিডেশন অ্যানোটেশনগুলি ডাটা ভ্যালিডেশন এবং ফিল্ডের মধ্যে সম্পর্ক সরল ও স্বচ্ছ করে।


Tapestry ভ্যালিডেশন ফ্রেমওয়ার্কের বৈশিষ্ট্য

  1. Built-in Validation Annotations Tapestry কিছু সাধারণ ভ্যালিডেশন অ্যানোটেশন সরবরাহ করে, যা ফিল্ডের মান যাচাই করতে ব্যবহৃত হয়।
  2. Custom Validation Tapestry আপনাকে কাস্টম ভ্যালিডেশন রুলস তৈরি করার সুযোগ দেয়। আপনি আপনার নিজস্ব লজিক অনুসারে ভ্যালিডেশন রুলস তৈরি করতে পারেন।
  3. Error Handling and Messages Tapestry-এর ফ্রেমওয়ার্ক অটোমেটিকভাবে ফর্ম ইনপুট ভ্যালিডেশন ত্রুটির বার্তা দেখায় এবং আপনি কাস্টম ত্রুটি বার্তা ব্যবহার করতে পারেন।

Tapestry ভ্যালিডেশন অ্যানোটেশন

Tapestry এর বিভিন্ন ভ্যালিডেশন অ্যানোটেশন রয়েছে, যা সহজেই প্রপার্টি বা ফিল্ডের জন্য ব্যবহার করা যেতে পারে।

  1. @Required

    • একটি ফিল্ডের জন্য @Required অ্যানোটেশন ব্যবহার করা হয়, যা ইনপুট ফিল্ডটি অবশ্যই পূর্ণ করতে হবে।

    উদাহরণ:

    @Property
    @Required(message = "Username is required")
    private String username;
    
  2. @Length

    • @Length অ্যানোটেশন ব্যবহার করে একটি স্ট্রিংয়ের জন্য মিনিমাম এবং ম্যাক্সিমাম দৈর্ঘ্য নির্ধারণ করা যায়।

    উদাহরণ:

    @Property
    @Length(min = 5, max = 20, message = "Username must be between 5 and 20 characters")
    private String username;
    
  3. @Email

    • একটি ইমেল ফিল্ডের জন্য @Email অ্যানোটেশন ব্যবহার করা হয়, যা ফিল্ডের মান একটি বৈধ ইমেল ঠিকানা কিনা তা যাচাই করে।

    উদাহরণ:

    @Property
    @Email(message = "Please enter a valid email address")
    private String email;
    
  4. @Pattern

    • @Pattern অ্যানোটেশন ব্যবহার করে আপনি একটি নির্দিষ্ট প্যাটার্নে ইনপুট ডেটা যাচাই করতে পারেন, যেমন নম্বর, ফোন নম্বর ইত্যাদি।

    উদাহরণ:

    @Property
    @Pattern(regexp = "\\d{10}", message = "Phone number must be 10 digits")
    private String phoneNumber;
    
  5. @Range

    • @Range অ্যানোটেশন ব্যবহার করে সংখ্যার জন্য একটি নির্দিষ্ট সীমা নির্ধারণ করা যায়, যেমন একটি ইনপুটের মান অবশ্যই ১ থেকে ১০০ এর মধ্যে হতে হবে।

    উদাহরণ:

    @Property
    @Range(min = 1, max = 100, message = "Age must be between 1 and 100")
    private int age;
    
  6. @MaxSize এবং @MinSize
    • @MaxSize এবং @MinSize অ্যানোটেশন ব্যবহার করে আপনি ফাইল আপলোডের ক্ষেত্রে একটি ফাইলের সর্বোচ্চ এবং সর্বনিম্ন আকার নির্ধারণ করতে পারেন।

কাস্টম ভ্যালিডেশন তৈরি করা

Tapestry আপনাকে কাস্টম ভ্যালিডেশন তৈরি করার সুযোগ দেয়। আপনি একটি ভ্যালিডেশন ক্লাস তৈরি করতে পারেন এবং @Validate অ্যানোটেশন ব্যবহার করে সেটি প্রোপার্টিতে প্রয়োগ করতে পারেন।

  1. Custom Validator Class:
package com.example.validators;

import org.apache.tapestry5.validator.AbstractValidator;
import org.apache.tapestry5.validator.ValidationException;

public class CustomValidator extends AbstractValidator {
    @Override
    public void validate(Object value, String message, ValidationException exception) {
        String input = (String) value;
        if (input != null && input.length() < 5) {
            exception.addValidationError(message); // Custom error message
        }
    }
}
  1. Custom Validator ব্যবহার করা:
@Property
@Validate(CustomValidator.class)
private String customField;

এখানে, যদি customField এর মান ৫টি ক্যারেক্টারের চেয়ে ছোট হয়, তাহলে এটি একটি ত্রুটি তৈরি করবে।


Tapestry তে ভ্যালিডেশন ত্রুটি বার্তা এবং আউটপুট

Tapestry অটোমেটিকভাবে ফর্ম সাবমিশন এবং ভ্যালিডেশন চেকের পর ত্রুটি বার্তা দেখাবে। আপনি এটি কাস্টমাইজ করতে পারেন যাতে আরও স্পষ্ট বার্তা প্রদর্শিত হয়। সাধারণত, ফর্ম ভ্যালিডেশন ত্রুটির বার্তা <t:form> এর মধ্যে প্রদর্শিত হয়।

উদাহরণ:

<t:form t:id="userForm">
    <t:textfield t:id="username" value="username" />
    <t:passwordfield t:id="password" value="password" />

    <t:button value="Submit" t:id="submitButton"/>

    <!-- Display validation error messages -->
    <t:message t:id="errorMessage" for="username"/>
    <t:message t:id="errorMessage" for="password"/>
</t:form>

এখানে:

  • <t:message> ট্যাগটি নির্দিষ্ট ইনপুট ফিল্ডের জন্য ত্রুটি বার্তা প্রদর্শন করতে ব্যবহৃত হয়। for অ্যাট্রিবিউটের মাধ্যমে আপনি যে ফিল্ডের জন্য ত্রুটি বার্তা দেখাতে চান তা নির্দিষ্ট করতে পারেন।

সারাংশ

Tapestry এর Validation Framework একটি শক্তিশালী এবং নমনীয় টুল, যা আপনাকে ফর্ম ডেটা যাচাই করতে সাহায্য করে। এতে বিভিন্ন বিল্ট-ইন ভ্যালিডেশন অ্যানোটেশন যেমন @Required, @Length, @Email, @Pattern, এবং @Range সহ কাস্টম ভ্যালিডেশন তৈরি করার সুবিধা রয়েছে। Tapestry ভ্যালিডেশন আপনাকে সহজে এবং কার্যকরভাবে ফর্ম ডেটার বৈধতা যাচাই করতে সহায়তা করে এবং ত্রুটি বার্তা দেখানোর প্রক্রিয়াকে সহজ করে তোলে।

Content added By

Custom Validation তৈরি করা

Apache Tapestry-এর Validation Framework আপনাকে বিভিন্ন ধরণের ডেটা যাচাই করার সুবিধা প্রদান করে, যেমন ফর্ম ইনপুট এর সঠিকতা যাচাই করা। Tapestry ফ্রেমওয়ার্কে আপনি Custom Validation তৈরি করতে পারেন, যা ব্যবহারকারী ইনপুট অনুযায়ী আপনার নির্দিষ্ট কাস্টম রুলস অনুসারে ডেটা যাচাই করবে।

এখানে আমরা Custom Validation তৈরি করার পদ্ধতি সম্পর্কে আলোচনা করব।


Tapestry এর Custom Validation তৈরির ধাপ

  1. Custom Validator Class তৈরি করা
  2. Custom Validator ক্লাসকে পেজ বা কম্পোনেন্টে ব্যবহার করা

ধাপ ১: Custom Validator Class তৈরি করা

Tapestry-তে Custom Validation তৈরি করতে, প্রথমে আপনাকে একটি Validator Class তৈরি করতে হবে যা Validator ইন্টারফেস বা @Validate এনোটেশন ব্যবহার করবে।

Custom Validator Class তৈরি করতে নিচের ধাপগুলো অনুসরণ করুন:

  1. Custom Validator Interface তৈরি করা

    Tapestry আপনাকে নিজের কাস্টম ভ্যালিডেশন তৈরি করার জন্য একটি interface প্রদান করে যার মাধ্যমে আপনি নির্দিষ্ট ভ্যালিডেশন রুল তৈরি করতে পারবেন।

package com.example.validators;

import org.apache.tapestry5.Validator;
import org.apache.tapestry5.ValidationException;
import org.apache.tapestry5.annotations.Validate;

public class UsernameValidator implements Validator<String> {

    @Override
    public void validate(String value) throws ValidationException {
        if (value == null || value.trim().isEmpty()) {
            throw new ValidationException("Username cannot be empty.");
        }

        if (value.length() < 5) {
            throw new ValidationException("Username must be at least 5 characters long.");
        }

        if (value.contains(" ")) {
            throw new ValidationException("Username cannot contain spaces.");
        }
    }
}

এখানে:

  • validate() মেথডে ব্যবহারকারী প্রদানকৃত username ইনপুট যাচাই করা হচ্ছে।
  • যদি username খালি থাকে বা 5 এর কম অক্ষর থাকে অথবা স্পেস থাকে, তবে ValidationException ছুঁড়ে দেওয়া হবে, যা তাতে ব্যবহারকারীকে একটি ত্রুটি বার্তা দেখাবে।

ধাপ ২: Custom Validation ব্যবহার করা

এখন আমরা Login ফর্মের username ফিল্ডে এই কাস্টম ভ্যালিডেশন প্রয়োগ করব।

  1. Java ক্লাসে Custom Validation যোগ করা:
package com.example.pages;

import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.Validate;
import org.apache.tapestry5.ioc.annotations.Inject;
import com.example.validators.UsernameValidator;

public class Login {
    @Property
    @Validate("usernameValidator")
    private String username;  // Username field
    
    @Property
    private String password;  // Password field

    @Property
    private boolean rememberMe;  // Remember Me checkbox

    // Action to be performed when the form is successfully submitted
    public Object onSuccessFromLoginForm() {
        if ("admin".equals(username) && "password".equals(password)) {
            return Home.class;
        } else {
            return Login.class;
        }
    }
}

এখানে:

  • @Validate এনোটেশন ব্যবহার করে আমরা username ফিল্ডে UsernameValidator কাস্টম ভ্যালিডেশন যুক্ত করেছি। এটি ফর্ম সাবমিট হলে validate() মেথডকে কল করবে এবং নির্দিষ্ট শর্তে ত্রুটি বার্তা প্রদান করবে।

ধাপ ৩: Tapestry-তে Custom Validator ব্যবহার করার জন্য TML ফাইল

এখন, আমাদের ফর্মের TML টেমপ্লেট ফাইলের মাধ্যমে ভ্যালিডেশন বার্তা দেখাতে হবে।

login.tml (TML ফাইল):

<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
    <head>
        <title>Login Form</title>
    </head>
    <body>
        <h2>Login</h2>

        <!-- Form Tag -->
        <t:form t:id="loginForm">
            <t:label value="Username" for="username"/>
            <t:textfield t:id="username" value="username"/>

            <t:label value="Password" for="password"/>
            <t:passwordfield t:id="password" value="password"/>

            <t:checkbox t:id="rememberMe" value="rememberMe" label="Remember Me" />
            
            <!-- Login Button -->
            <t:button t:id="loginButton" value="Login"/>
        </t:form>

        <!-- Displaying validation error messages -->
        <t:if test="username.validator.hasErrors">
            <div style="color: red;">
                <t:message from="username" />
            </div>
        </t:if>
    </body>
</html>

এখানে:

  • <t:message>: এই ট্যাগটি ব্যবহারকারীর ইনপুটের জন্য সংশ্লিষ্ট ভ্যালিডেশন ত্রুটি বার্তা দেখাতে ব্যবহৃত হয়। এখানে username ইনপুটের জন্য কোনো ত্রুটি হলে, এটি ত্রুটি বার্তা প্রদর্শন করবে।
  • <t:if>: এটি একটি কন্ডিশনাল ট্যাগ, যা ভ্যালিডেশন ত্রুটি থাকলে ত্রুটি বার্তা প্রদর্শন করবে।

ধাপ ৪: Custom Validation-এর উন্নত ব্যবহার

Tapestry-তে Custom Validation আরও উন্নত করতে, আপনি multiple constraints এবং Complex Validation প্রয়োগ করতে পারেন, যেমন:

  • পাসওয়ার্ড শক্তি যাচাই করা (lowercase, uppercase, special characters, etc.)
  • বিশেষ নিয়মের অধীনে email validation করা।
  • Asynchronous Validation: কোন কিছু আপডেট বা সার্ভার সাইড চেক করার জন্য।

এছাড়া আপনি custom validation annotations তৈরি করে, অন্যান্য ফিল্ডগুলিতেও এই কাস্টম ভ্যালিডেশন প্রয়োগ করতে পারেন।


সারাংশ

Tapestry ফ্রেমওয়ার্কে Custom Validation তৈরি করা সহজ এবং কার্যকর। @Validate এনোটেশন এবং Validator Interface ব্যবহার করে আপনি আপনার নিজস্ব ভ্যালিডেশন রুল তৈরি করতে পারেন, যা ফর্ম ডেটা যাচাই করতে সহায়ক। Tapestry Validation Framework এর মাধ্যমে আপনি দ্রুত এবং পরিষ্কারভাবে ফর্মের ভ্যালিডেশন করতে পারবেন, এবং কাস্টম ভ্যালিডেশন ব্যবহার করে আপনাদের প্রয়োজনীয় নির্দিষ্ট চেক করতে পারবেন।

Content added By

Form এর সাবমিশন এবং সার্ভার সাইড প্রসেসিং

Tapestry ফ্রেমওয়ার্কে form submission এবং server-side processing কার্যকরভাবে পরিচালনা করা হয়। এটি form components এবং action methods ব্যবহার করে ফর্ম ডেটা প্রক্রিয়া এবং সাবমিট করে। এর মাধ্যমে আপনি ব্যবহারকারীদের ইনপুট গ্রহণ, ডেটা ভ্যালিডেশন, এবং সার্ভার সাইড প্রক্রিয়াকরণ করতে পারেন।

এই টিউটোরিয়ালে, আমরা দেখব কীভাবে Tapestry তে একটি ফর্ম সাবমিট করা হয় এবং তারপরে সার্ভার সাইডে ডেটা প্রক্রিয়া করা হয়।


ধাপ ১: ফর্ম তৈরি করা

প্রথমে একটি ফর্ম তৈরি করা হবে যাতে ব্যবহারকারী কিছু ইনপুট প্রদান করতে পারে। এখানে একটি সাধারণ login form তৈরি করা হবে।

  1. HTML টেমপ্লেট (login.tml):
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
    <head>
        <title>Login Form</title>
    </head>
    <body>
        <h2>Login</h2>
        
        <!-- Form Tag -->
        <t:form t:id="loginForm">
            <t:label value="Username" for="username" />
            <t:textfield t:id="username" value="username" />

            <t:label value="Password" for="password" />
            <t:passwordfield t:id="password" value="password" />

            <!-- Login Button -->
            <t:button t:id="loginButton" value="Login" />
        </t:form>
    </body>
</html>

এখানে:

  • t:form: এটি ফর্মের জন্য Tapestry কম্পোনেন্ট যা ইনপুট ডেটা সংগ্রহ করে।
  • t:textfield: এটি একটি টেক্সট ফিল্ড তৈরি করে যেখানে ব্যবহারকারী username প্রদান করবে।
  • t:passwordfield: এটি একটি পাসওয়ার্ড ফিল্ড তৈরি করে, যেখানে ব্যবহারকারী password প্রদান করবে।
  • t:button: এটি একটি সাবমিট বাটন তৈরি করে।

ধাপ ২: সার্ভার সাইড প্রসেসিং

ফর্মটি যখন সাবমিট হবে, তখন Tapestry একটি action method কল করবে, যেখানে ডেটা প্রক্রিয়া এবং অন্যান্য কাজ করা যাবে। ফর্মের ডেটা প্রসেস করার জন্য আমরা একটি Java ক্লাস ব্যবহার করব।

  1. Java ক্লাস (Login.java):
package com.example.pages;

import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SessionState;

public class Login {
    @Property
    private String username;  // Username field

    @Property
    private String password;  // Password field

    // Action method for form submission
    public Object onSuccessFromLoginForm() {
        if ("admin".equals(username) && "password".equals(password)) {
            // Redirect to Home page if login is successful
            return Home.class;
        } else {
            // Stay on the login page if login fails
            return Login.class;
        }
    }
}

এখানে:

  • @Property: এই এনোটেশনটি Tapestry ফ্রেমওয়ার্ককে বলে যে, username এবং password প্রপার্টিগুলি UI কম্পোনেন্টের সাথে বাইনড হবে।
  • onSuccessFromLoginForm(): এই মেথডটি ফর্মটি সফলভাবে সাবমিট হলে কল হবে। এখানে লগইন যাচাই করা হয় এবং সফল হলে Home পেজে রিডাইরেক্ট করা হয়, অন্যথায় আবার Login পেজে ফিরে আসা হয়।

ধাপ ৩: ফর্ম ভ্যালিডেশন

Tapestry এর নিজস্ব ভ্যালিডেশন ফ্রেমওয়ার্ক রয়েছে, যা ডেটার ভ্যালিডেশন করতে সাহায্য করে। আপনি ফর্ম ডেটার উপর কাস্টম ভ্যালিডেশন যোগ করতে পারেন।

  1. Java ক্লাসে ভ্যালিডেশন:
package com.example.pages;

import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.validator.annotations.Length;

public class Login {
    @Property
    @Length(min = 5, message = "Username must be at least 5 characters")
    private String username;  // Username field

    @Property
    @Length(min = 6, message = "Password must be at least 6 characters")
    private String password;  // Password field

    // Action method for form submission
    public Object onSuccessFromLoginForm() {
        if ("admin".equals(username) && "password".equals(password)) {
            // Redirect to Home page if login is successful
            return Home.class;
        } else {
            // Stay on the login page if login fails
            return Login.class;
        }
    }
}

এখানে:

  • @Length: এটি username এবং password ফিল্ডের জন্য একটি মিনিমাম লেন্থ চেক যোগ করছে। যদি ব্যবহারকারী কমপক্ষে ৫টি অক্ষর username এবং ৬টি অক্ষর password প্রদান না করে, তবে Tapestry একটি ত্রুটি বার্তা দেখাবে।

ধাপ ৪: ফর্ম সাবমিট এবং সার্ভার সাইডে ডেটা প্রক্রিয়া

ফর্মটি যখন সাবমিট হয়, তখন onSuccessFromLoginForm() মেথডটি কল হবে। এই মেথডে:

  • username এবং password যাচাই করা হবে।
  • লগইন সফল হলে ব্যবহারকারীকে Home পেজে রিডাইরেক্ট করা হবে।
  • যদি লগইন ব্যর্থ হয়, তবে আবার লগইন পেজে ফিরে আসবে।

এছাড়া, আপনি onFailure এবং onSuccess মেথডগুলো ব্যবহার করে ফর্মের সাবমিশন প্রসেসে আরো কাস্টম কার্যাবলী যোগ করতে পারেন, যেমন ত্রুটি বার্তা প্রদর্শন বা লগিং।


সারাংশ

Tapestry তে ফর্ম সাবমিশন এবং সার্ভার সাইড প্রসেসিং খুবই সহজ এবং কার্যকর। t:form, t:textfield, t:passwordfield, t:button কম্পোনেন্ট ব্যবহার করে ফর্ম তৈরি করা হয় এবং action methods ব্যবহার করে ডেটা প্রক্রিয়া করা হয়। Tapestry এর ফর্ম ভ্যালিডেশন ফিচার সহ, আপনি ডেটার জন্য কাস্টম ভ্যালিডেশন যোগ করতে পারেন, যাতে ব্যবহারকারী ইনপুট সঠিক এবং নির্ভুল থাকে।

Content added By
Promotion